//package stateKit;
//
//import cn.hutool.core.date.DateField;
//import cn.hutool.core.date.DateTime;
//import cn.hutool.core.date.DateUtil;
//import org.apache.commons.lang3.StringUtils;
//
//import java.util.Date;
//
///**
// * 统计时间工具类
// */
//public class StateTimeKit {
//
//    public static StateTime getStateTime(int scopeId){
//        return getStateTime(scopeId, null, null);
//    }
//
//    public static StateTime getStateTime(int scopeId, String startTimeString, String endTimeString){
//        Date startTime = StringUtils.isNotEmpty(startTimeString) ? DateUtil.parseDateTime(startTimeString) : null;
//        Date endTime = StringUtils.isNotEmpty(endTimeString) ? DateUtil.parseDateTime(endTimeString) : null;
//        return getStateTime(StateTimeInterval.getById(scopeId), startTime, endTime);
//    }
//
//    public static StateTime getStateTime(StateTimeInterval interval){
//        return getStateTime(interval, null, null);
//    }
//
//    public static StateTime getStateTime(StateTimeInterval interval, Date startTime, Date endTime) {
//
//        if(startTime!=null && endTime!=null && startTime.getTime()<endTime.getTime()){
//            startTime = getBeginTime(interval, startTime);
//            endTime = getEndTime(interval, endTime);
//        }else{
//            endTime = getBeginTime(interval, new Date());
//            startTime = getStartTime(interval, endTime);
//        }
//
//        return new StateTime(startTime, endTime, interval.getIntervalMs());
//    }
//
//
//    /**
//     * 根据时间间隔获取endTime
//     * @param interval
//     * @param time
//     * @return
//     */
//    private static Date getEndTime(StateTimeInterval interval, Date time){
//        Date maxEndTime = getBeginTime(interval, new Date());
//        if(time.getTime()>maxEndTime.getTime()){
//            return maxEndTime;
//        }
//
//        switch (interval) {
//            case Minute:
//            case Hour:
//                return new Date(time.getTime() - (time.getTime() % interval.getIntervalMs()) + interval.getIntervalMs());
//            case Day:
//                return DateUtil.beginOfDay(DateUtils.addDays(time, +1));
//            default:
//                break;
//        }
//        throw new RuntimeException();
//    }
//
//    /**
//     * 根据时间间隔获取beginTime
//     * @param interval
//     * @param time
//     * @return
//     */
//    private static Date getBeginTime(StateTimeInterval interval, Date time){
//        switch (interval) {
//            case Minute:
//            case Hour:
//                return new Date(time.getTime() - (time.getTime() % interval.getIntervalMs()));
//            case Day:
//                return DateUtil.beginOfDay(time);
//            default:
//                break;
//        }
//        throw new RuntimeException();
//    }
//
//    /**
//     * 根据结束时间获取默认的开始时间
//     * @param interval
//     * @param endTime
//     * @return
//     */
//    private static Date getStartTime(StateTimeInterval interval, Date endTime){
//        switch (interval) {
//            case Minute:
//                return new DateTime((endTime)).offset(DateField.HOUR, -1).toJdkDate();
//            case Hour:
//                return DateUtils.addDays(endTime, -1);
//            case Day:
//                return DateUtils.addDays(endTime, -7);
//            default:
//                break;
//        }
//        throw new RuntimeException();
//    }
//}
//
//
//
//
